#ifndef __COMMON_INFO__
#define __COMMON_INFO__

#include <string>

typedef enum {
    MEDIA_ALL,
    MEDIA_PICTURE,
    MEDIA_VIDEO,
    MEDIA_BURST,
    MEDIA_ASTRO,
    MEDIA_PANO,
} MediaType;

typedef struct {
    std::string file_path;
    int64_t modification_time;
    int64_t file_size;
    std::string thumbnail_path;
    int width;
    int height;
    int media_type;
    int file_state = 0;
} commonInfo;

typedef struct {
    std::string dec;
    std::string ra;
    std::string target;
    std::string binning;
    std::string format;
    std::string exp_time;
    int gain;
    int shotsToTake;
    int shotsTaken;
    int shotsStacked;
    std::string ircut;
} AstroUniqueInfo;

typedef struct {
    commonInfo common_info;
    AstroUniqueInfo unique_info;
} AstroInfo;


typedef struct {
    int file_count;
} BurstUniqueInfo;

typedef struct {
    commonInfo common_info;
    BurstUniqueInfo unique_info;
} BurstInfo;

typedef struct {
    int row;
    int col;
} PanoUniqueInfo;

typedef struct {
    commonInfo common_info;
    PanoUniqueInfo unique_info;
} PanoInfo;

typedef struct {
    commonInfo common_info;
} PictureInfo;

typedef struct {
    int duration;
    int width;
    int height;
} VideoUniqueInfo;

typedef struct {
    commonInfo common_info;
    VideoUniqueInfo unique_info;
} VideoInfo;

typedef struct {
    MediaType media_type;
    commonInfo common_info;
    AstroUniqueInfo astro_unique_info;
    BurstUniqueInfo burst_unique_info;
    PanoUniqueInfo pano_unique_info;
    VideoUniqueInfo video_unique_info;
} AlbumAllInfo;


#endif